package 力扣热题100;

/**
 * 找最长回文字符串
 * 找一个点往两边阔
 */
public class LeetCode5 {
    public static String longestPalindrome(String s) {
        int len =0;
        int start=0;
        int end=0;
        for (int i = 0; i < s.length(); i++) {
            int len1=find(s,i,i);
            int len2=find(s,i,i+1);
            len=Math.max(len1,len2);
            if(len>end-start){//每次都要比较一下，是否比上个位置的要长.
                start=i-(len-1)/2;//不管是在不在中间，用len-1都是可以回到前面的坐标
                end=i+len/2;
            }
        }
       return s.substring(start,end+1);//这个方法为左闭右开,所以要加1
    }

    private static int find(String s, int l, int r) {
        while (l>=0&&r<s.length()&&s.charAt(l)==s.charAt(r)){
            l--;
            r++;
        }
        return r-l-1;
    }

    public static void main(String[] args) {
        String s="babad";
        System.out.println(longestPalindrome(s));
    }

}
